public class GuPiao_max {

}
//class Solution {
//    public int maxProfit(int[] prices) {
//        int[][] f=new int[prices.length][4];
//        //0表示买入股票的状态，1表示卖出股票（冷冻期前），2表示卖出股票（冷冻期后），3表示冷冻期时
//        f[0][0]=-prices[0];
//        for (int i=1;i<prices.length;i++ ){
//            f[i][0]=Math.max(f[i-1][0],Math.max(f[i-1][2]-prices[i],f[i-1][3]-prices[i]));
//            f[i][1]=f[i-1][0]+prices[i];
//            f[i][2]=Math.max(f[i-1][3],f[i-1][2]);
//            f[i][3]=f[i-1][1];
//        }
//        return Math.max(f[prices.length-1][1],Math.max(f[prices.length-1][2],f[prices.length-1][3]));
//    }
//}

//class Solution {
//    public int maxProfit(int[] prices) {
//        if ( prices.length==1 ){
//            return 0;
//        }
//        //先算出只买一个的所有情况，然后再在买一个的基础上再买一个
//        int[][] f=new int[prices.length][5];
//        f[0][1]=-prices[0];
//        f[0][3]=-prices[0];
//        //0列表示不进行任何操作
//        //1列表示第一次买入
//        //2表示第一次卖出
//        //3表示第二次买入
//        //4表示第二次卖出
//        //前面4列均是为了最后一列得出结果服务的，因为第n列需要第n-1列的数
//        for ( int i=1;i<prices.length;i++ ){
//            f[i][0]=f[i-1][0];
//            f[i][1]=Math.max(f[i-1][1],f[i-1][0]-prices[i]);
//            f[i][2]=Math.max(f[i-1][2],f[i-1][1]+prices[i]);
//            f[i][3]=Math.max(f[i-1][3],f[i-1][2]-prices[i]);
//            f[i][4]=Math.max(f[i-1][4],f[i-1][3]+prices[i]);
//        }
//        return f[prices.length-1][4];
////        int max=0;
////        int[][] f=new int[prices.length][2];
////        //f[0][0]=0;
////        for ( int i=1;i<prices.length;i++ ){
////            f[i][0]=maxProfitI(prices,i+1,0);
////        }
////        for ( int i=1;i<prices.length;i++ ){
////            f[i][1]=maxProfitI(prices,i+1,f[i][0]);
////            max=Math.max(max,f[i][1]);
////        }
////        return max;
//
//    }